(* the top-level *)
type action = Ast | Compile

let _ =
	let action = if Array.length Sys.argv > 1 then
		List.assoc Sys.argv.(1) [ ("-a", Ast);
															("-c", Compile) ]
		else Compile in
  let lexbuf = Lexing.from_channel stdin in
  let program = Parser.program Scanner.token lexbuf in
	match action with 
		| Ast -> let listing = Ast.string_of_program program in print_string listing
		| Compile -> let listing = Compile.translate program in print_string listing